[組織ポリシー]Soft Deleteの保持期間などを設定できる組織ポリシーを試してみた

[組織ポリシー]Soft Deleteの保持期間などを設定できる組織ポリシーを試してみた

Cloud StorageのSoft Deleteの期間や有効無効を制御できる組織ポリシーについてまとめてみました。
Clock Icon2024.09.02

概要

Cloud StorageのSoft Delete機能に関して、保持期間などを組織単位で設定できる組織ポリシーとしてCloud Storage - soft delete policy retention duration in seconds(Cloud Storage - 削除(復元可能)ポリシーの保持期間(秒))があります。

表示名 内容 制約
Cloud Storage - soft delete policy retention duration in seconds この制約は、この制約の対象の Cloud Storage バケットに設定された削除(復元可能)ポリシーの許容保持期間を定義します。この制約が適用されるバケットへの挿入、更新、パッチ適用オペレーションには、制約と一致する削除(復元可能)ポリシー期間が存在する必要があります。新しい組織のポリシーが適用されても、既存のバケットの削除(復元可能)ポリシーは変更されず有効なままです。デフォルトでは、組織のポリシーが指定されない場合、任意の期間の削除(復元可能)ポリシーを Cloud Storage バケットに設定できます。 constraints/storage.softDeletePolicySeconds

引用:https://cloud.google.com/resource-manager/docs/organization-policy/org-policy-constraints?hl=ja#constraints-for-specific-services

この組織ポリシーはSoft Deleteの保持期間や機能を無効にするかなどを設定できるポリシーとなります。そもそもSoft Deleteとはという方は以下の記事をご参照ください。
https://dev.classmethod.jp/articles/gcp-gcs-soft-delete/

本記事では、上記の組織ポリシーに関してどんな設定ができるのか、設定した場合の動作はどんな感じなのか、を実際に試してみました。また、本ポリシーはリファレンスに以下の通り記載があるように既に作成済みのバケットには効果がありません。

新しい組織のポリシーが適用されても、既存のバケットの削除(復元可能)ポリシーは変更されず有効なままです

どんな設定ができるのか

以下が設定可能値のサマリです。

設定値 動作
すべて許可(デフォルト) バケット作成時、作成後に任意の期間を設定可能
すべて許可しない バケット作成、作成後にいかなる期間も設定できません
カスタム(許可) バケット作成時、作成後に指定した期間を設定可能
カスタム(拒否) バケット作成時、作成後に指定した期間を設定不可能

すべて許可しないを設定した場合、Soft Deleteのチェックボックスをオフにしようが期間に0日を設定しようがコマンドで作成しようが何をしても制約違反violates constraint 'constraints/storage.softDeletePolicySeconds'となってしまいバケット作成ができませんでした。この設定値を用いる際はタグを条件にするなどしないといけないと考えます。Soft Deleteに設定できる値が0,最小値は604,800秒 - 最大7,776,000秒(7日-90日)の範囲となっていて全て許可しないを設定した場合でも値を設定しないということができないためと考えます。(gcludコマンドやREST APIで設定を省略すると604,800秒が設定される)
スクリーンショット 2024-09-02 17.44.05

上記設定可能値を踏まえ、今回は以下のパターンを試してみました。

  • Soft Deleteの無効を強制する(0日を許可)
  • Soft Deleteの有効を強制する(0日を拒否)
  • Soft Deleteの期間を指定する(7日を許可)

Soft Deleteの無効を強制する設定

以下の設定をします。プロジェクトに対して設定する前提です。

設定項目 設定値
ポリシーのソース 親のポリシーをオーバーライドする
ポリシーの適用 置き換える
ポリシーの値 カスタム
ポリシーの種類 許可
日数 0

スクリーンショット 2024-09-02 18.13.49

0日(=Soft Deleteが無効)のみ許可することで、0日以外の設定値を設定できなくなります。
つまりはSoft Deleteを無効にすることが強制されるということです。

上記の設定後、バケット作成を行ってみます。まずはデフォルトのSoft Delete期間(筆者の環境では7日間)を設定して作成してみます。すると、以下の通り制約違反のメッセージが出力されバケットを作成することができません。
スクリーンショット 2024-09-02 18.19.28
'604800' violates constraint 'constraints/storage.softDeletePolicySeconds'

任意の期間を設定できるオプション(Set custom retention duration)を見てみます。
スクリーンショット 2024-09-02 18.23.36

0秒しか選択することができないようになっていました。参考までに組織ポリシー設定前は以下のとおり任意の期間を設定することができました。
スクリーンショット 2024-09-02 18.27.16

上記より、0秒のみ設定可能とすることでSoft Deleteの無効を強制することができました。

※すでにSoft Deleteを有効にしているバケットがある状態で本設定をしたあとに、該当のバケットのSoft Delete期間編集画面を開くと以下のとおり0秒(Soft Delete無効)を選択できるのみでした。つまりはSoft Deleteを無効にするかどうかのみ選択可能ということです。
スクリーンショット 2024-09-02 18.51.39

Soft Deleteの有効を強制する設定

以下の設定をします。プロジェクトに対して設定する前提です。

設定項目 設定値
ポリシーのソース 親のポリシーをオーバーライドする
ポリシーの適用 置き換える
ポリシーの値 カスタム
ポリシーの種類 拒否
日数 0

スクリーンショット 2024-09-02 18.31.44

0日(Soft Deleteを無効)を拒否することで、必ずSoft Deleteが有効となる寸法です。

設定したら実際にバケットを作成してみて確認します。
まずは0日を設定してみます。
スクリーンショット 2024-09-02 18.36.02

想定通り制約違反のメッセージが出力されて、作成できませんでした。
'0' violates constraint 'constraints/storage.softDeletePolicySeconds' '0' violates constraint 'constraints/storage.softDeletePolicySeconds'
スクリーンショット 2024-09-02 18.37.08

続いて、0日以外の値を設定して作成してみます。今回は7日を設定しました。

スクリーンショット 2024-09-02 18.38.34

今回は問題なくバケットを作成することができました。

スクリーンショット 2024-09-02 18.40.10

バケットのSoft Delete期間編集画面でも以下の通り任意の期間を設定可能でした(0以外)。
スクリーンショット 2024-09-02 18.56.41

Soft Deleteの期間を指定する設定

以下の設定をします。プロジェクトに対して設定する前提です。

設定項目 設定値
ポリシーのソース 親のポリシーをオーバーライドする
ポリシーの適用 置き換える
ポリシーの値 カスタム
ポリシーの種類 許可
日数 7

上記を設定すると、7日のみ設定可能になります。任意の期間を設定できるオプション(Set custom retention duration)をみてみると7日しか表示されません。
スクリーンショット 2024-09-02 18.47.26

バケット作成後のSoft Delete期間編集画面でも7日しか表示されません。
スクリーンショット 2024-09-02 18.48.43

まとめ

まずは3行まとめです。

  • 0日の許可、拒否を活用することでSoft Deleteの無効有効を設定できる
  • 既存のバケットには影響しない
  • Soft Deleteに設定できる期間は0秒または604,800秒 〜 7,776,000秒の範囲(7日 〜 90日)

本ポリシーを活用することで、Soft Deleteの期間設定を統制することが可能なことがわかりました。検証環境であれば無効にしておくと、不要なデータ料金の発生を防ぐことができますし本番環境では有効を必須にしておくことで不慮のデータ損失を防ぐことができるかもしれません。組織ポリシーを設定する上では本ポリシーもぜひ検討したいところです。
この記事が、組織ポリシーで悩んでいる方の一助になれば嬉しく思います。それではまた。ナマステー

参考

https://cloud.google.com/storage/docs/soft-delete?hl=ja

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.